
@ONLINE{officefloor,
	author = {Daniel Sagenschneider},
	title = {OfficeFloor version 2.13.0},
	month = {June},
	year = {2013},
	howpublished = {\url{http://www.officefloor.net}}
}

@inproceedings{tuning-important,
 author = {Pariag, David and Brecht, Tim and Harji, Ashif and Buhr, Peter and Shukla, Amol and Cheriton, David R.},
 title = {Comparing the performance of web server architectures},
 booktitle = {Proceedings of the 2nd ACM SIGOPS/EuroSys European Conference on Computer Systems 2007},
 series = {EuroSys '07},
 year = {2007},
 isbn = {978-1-59593-636-3},
 location = {Lisbon, Portugal},
 pages = {231--243},
 numpages = {13},
 doi = {10.1145/1272996.1273021},
 acmid = {1273021},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {events, performance, scalability, threads, web servers},
}

@techreport{tuning-os-important,
    hal_id = {hal-00674475},
    url = {http://hal.inria.fr/hal-00674475},
    title = {{An Analysis of Web Servers Architectures Performances on Commodity Multicores}},
    author = {Genev{\`e}s, Sylvain},
    abstract = {{We study the impact of concurrent programming models on multicore performances of Web servers. More precisely, we consider three implementations of servers, each being representative of a particular model: Knot (thread-based), Userver (event-driven), Watpipe (stage-based). Our experiments show that memory access costs increase with the number of cores. We also show that at 8 cores we reach a point where the memory is fully saturated, leading to all Web server implementations having the same performance. Using fine-grain profiling, we are able to pinpoint the cause of this issue as a hardware bottleneck: the saturation of the address bus. Further memory benchmarking on a 24-cores machine show that a memory-related scalability issue is still present beyond this point.}},
    language = {Anglais},
    affiliation = {SARDES - INRIA Grenoble Rh{\^o}ne-Alpes / LIG Laboratoire d'Informatique de Grenoble},
    type = {Rapport de recherche},
    year = {2012},
    month = {Febuary},
    pdf = {http://hal.inria.fr/hal-00674475/PDF/paper.pdf},
}

@PhdThesis{low-server-footprint,
  author = 	 {Harji, Ashif},
  title = 	 {Performance Comparison of Uniprocessor and Multiprocessor Web Server Architectures},
  school = 	 {University of Waterloo},
  year = 	 {2010}
}

@techreport{pipeline,
    Author = {Welsh, Matt and Gribble, Steven D. and Brewer, Eric A. and Culler, David},
    Title = {A Design Framework for Highly Concurrent Systems},
    Institution = {EECS Department, University of California, Berkeley},
    Year = {2000},
    Number = {UCB/CSD-00-1108},
    Abstract = {Building highly concurrent systems, such as large-scale Internet services, requires managing many information flows at once and maintaining peak throughput when demand exceeds resource availability. In addition, any platform supporting Internet services must provide high availability and be able to cope with burstiness of load. Many approaches to building concurrent systems have been proposed, which generally fall into the two categories of threaded and event-driven programming. We propose that threads and events are actually on the ends of a design spectrum, and that the best implementation strategy for these applications is somewhere in between. <p>We present a general-purpose design framework for building highly concurrent systems, based on three design components -- tasks, queues, and thread pools -- which encapsulate the concurrency, performance, fault isolation, and software engineering benefits of both threads and events. We present a set of design patterns that can be applied to map an application onto an implementation using these components. In addition, we provide an analysis of several systems (including an Internet services platform and a highly available, distributed, persistent data store) constructed using our framework, demonstrating its benefit for building and reasoning about concurrent applications.}
}

@article{continuations,
 author = {Reynolds, John C.},
 title = {The discoveries of continuations},
 journal = {Lisp Symb. Comput.},
 issue_date = {Nov. 1993},
 volume = {6},
 number = {3-4},
 month = nov,
 year = {1993},
 issn = {0892-4635},
 pages = {233--248},
 numpages = {16},
 doi = {10.1007/BF01019459},
 acmid = {198114},
 publisher = {Kluwer Academic Publishers},
 address = {Hingham, MA, USA},
 keywords = {continuation, continuation-passing style, semantics},
} 

@TECHREPORT{proactor,
    author = {Irfan Pyarali and Tim Harrison and Douglas C. Schmidt and Thomas D. Jordan},
    title = {Proactor - An Object Behavioral Pattern for Demultiplexing and Dispatching Handlers for Asynchronous Events},
    institution = {Washington University},
    year = {1997}
}

@misc{reactor,
    author = {Douglas C. Schmidt},
    title = {Reactor -- An Object Behavioral Pattern for Demultiplexing and Dispatching Handlers for Synchronous Events},
    year = {1995}
}

@inproceedings{ioc,
       booktitle = {18th European Conference on Pattern Languages of Programs (EuroPLoP)},
           month = {July},
           title = {Thread Injection and Continuation Injection},
          author = {Daniel Sagenschneider},
            year = {2013}
}

@inproceedings{extrinsic-dependency-injection,
       booktitle = {15th European Conference on Pattern Languages of Programs (EuroPLoP)},
           month = {July},
           title = {Inversion-of-Control Layer},
          author = {Stefan Sobernig and Uwe Zdun},
            year = {2010}
}

@inproceedings{jaws,
    author = {James Hu and Douglas C. Schmidt},
    title = {JAWS: A Framework for High-performance Web Servers},
    booktitle = {In Domain-Specific Application Frameworks: Frameworks Experience by Industry},
    year = {1999},
    publisher = {Wiley \& Sons}
}

@inproceedings{hop,
 author = {Serrano, Manuel},
 title = {Hop, a Fast Server for the Diffuse Web},
 booktitle = {Proceedings of the 11th International Conference on Coordination Models and Languages},
 series = {COORDINATION '09},
 year = {2009},
 isbn = {978-3-642-02052-0},
 location = {Lisboa, Portugal},
 pages = {1--26},
 numpages = {26},
 doi = {10.1007/978-3-642-02053-7_1},
 acmid = {1573915},
 publisher = {Springer-Verlag},
 address = {Berlin, Heidelberg},
}

@inproceedings{saburo,
 author = {Loyaut{\'e}, Gautier and Forax, R{\'e}mi and Roussel, Gilles},
 title = {A Java toolkit for the design and the automatic checking of server architectures},
 booktitle = {Proceedings of the 5th international symposium on Principles and practice of programming in Java},
 series = {PPPJ '07},
 year = {2007},
 isbn = {978-1-59593-672-1},
 location = {Lisboa, Portugal},
 pages = {113--122},
 numpages = {10},
 doi = {10.1145/1294325.1294341},
 acmid = {1294341},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {Java toolkit, automatic generation, formal model, internet server, software engineering},
}


@inproceedings{flux,
 author = {Burns, Brendan and Grimaldi, Kevin and Kostadinov, Alexander and Berger, Emery D. and Corner, Mark D.},
 title = {Flux: a language for programming high-performance servers},
 booktitle = {Proceedings of the annual conference on USENIX '06 Annual Technical Conference},
 series = {ATEC '06},
 year = {2006},
 location = {Boston, MA},
 pages = {13--13},
 numpages = {1},
 acmid = {1267372},
 publisher = {USENIX Association},
 address = {Berkeley, CA, USA},
}

@inproceedings{aspen,
 author = {Upadhyaya, Gautam and Pai, Vijay S. and Midkiff, Samuel P.},
 title = {Expressing and exploiting concurrency in networked applications with aspen},
 booktitle = {Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming},
 series = {PPoPP '07},
 year = {2007},
 isbn = {978-1-59593-602-8},
 location = {San Jose, California, USA},
 pages = {13--23},
 numpages = {11},
 doi = {10.1145/1229428.1229433},
 acmid = {1229433},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {network servers, parallel programming, programming languages, resource management},
} 

@inproceedings{monadic-thread,
 author = {Li, Peng and Zdancewic, Steve},
 title = {Combining events and threads for scalable network services implementation and evaluation of monadic, application-level concurrency primitives},
 booktitle = {Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation},
 series = {PLDI '07},
 year = {2007},
 isbn = {978-1-59593-633-2},
 location = {San Diego, California, USA},
 pages = {189--199},
 numpages = {11},
 doi = {10.1145/1250734.1250756},
 acmid = {1250756},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {concurrency, event, haskell, implementation, monad, networking, programming, scalability, thread},
}

@article{url-continuation,
 author = {Queinnec, Christian},
 title = {Inverting back the inversion of control or, continuations versus page-centric programming},
 journal = {SIGPLAN Not.},
 issue_date = {February 2003},
 volume = {38},
 number = {2},
 month = feb,
 year = {2003},
 issn = {0362-1340},
 pages = {57--64},
 numpages = {8},
 doi = {10.1145/772970.772977},
 acmid = {772977},
 publisher = {ACM},
 address = {New York, NY, USA},
}

@inproceedings{process-continuation,
 author = {Hieb, R. and Dybvig, R. Kent},
 title = {Continuations and concurrency},
 booktitle = {Proceedings of the second ACM SIGPLAN symposium on Principles \& practice of parallel programming},
 series = {PPOPP '90},
 year = {1990},
 isbn = {0-89791-350-7},
 location = {Seattle, Washington, United States},
 pages = {128--136},
 numpages = {9},
 doi = {10.1145/99163.99178},
 acmid = {99178},
 publisher = {ACM},
 address = {New York, NY, USA},
} 

@incollection{reverse-ten-k-problem,
 author = {Liu, Dong and Deters, Ralph},
 chapter = {The Reverse C10K Problem for Server-Side Mashups},
 title = {Service-Oriented Computing --- ICSOC 2008 Workshops},
 editor = {Feuerlicht, George and Lamersdorf, Winfried},
 year = {2009},
 isbn = {978-3-642-01246-4},
 pages = {166--177},
 numpages = {12},
 doi = {10.1007/978-3-642-01247-1_16},
 acmid = {1534139},
 publisher = {Springer-Verlag},
 address = {Berlin, Heidelberg},
 keywords = {C10K, Client, HTTP, Mashup, Performance, RC10K, Scalability},
} 

@inproceedings{capriccio,
 author = {von Behren, Rob and Condit, Jeremy and Zhou, Feng and Necula, George C. and Brewer, Eric},
 title = {Capriccio: scalable threads for internet services},
 booktitle = {Proceedings of the nineteenth ACM symposium on Operating systems principles},
 series = {SOSP '03},
 year = {2003},
 isbn = {1-58113-757-5},
 location = {Bolton Landing, NY, USA},
 pages = {268--281},
 numpages = {14},
 doi = {10.1145/945445.945471},
 acmid = {945471},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {blocking graph, dynamic stack growth, linked stack management, resource-aware scheduling, user-level threads},
}

@inproceedings{seda,
 author = {Welsh, Matt and Culler, David and Brewer, Eric},
 title = {SEDA: an architecture for well-conditioned, scalable internet services},
 booktitle = {Proceedings of the eighteenth ACM symposium on Operating systems principles},
 series = {SOSP '01},
 year = {2001},
 isbn = {1-58113-389-8},
 location = {Banff, Alberta, Canada},
 pages = {230--243},
 numpages = {14},
 doi = {10.1145/502034.502057},
 acmid = {502057},
 publisher = {ACM},
 address = {New York, NY, USA},
} 

@article{actors,
  author    = {Carl Hewitt},
  title     = {Actor Model of Computation: Scalable Robust Information Systems},
  journal   = {CoRR},
  volume    = {abs/1008.1459},
  year      = {2012},
  ee        = {http://arxiv.org/abs/1008.1459v24},
  url        = {http://arxiv.org/abs/1008.1459v24},
  bibsource = {DBLP, http://dblp.uni-trier.de}
}

@inproceedings{dependency-capsules,
    author = {Lingkun Chu and Kai Shen and Hong Tang and Tao Yang and Jingyu Zhou},
    title = {Dependency Isolation for Thread-based Multi-tier Internet Services},
    booktitle = {In Proc. of the IEEE INFOCOM, Miami FL},
    year = {2005},
    pages = {796--806}
}

@ONLINE{spring,
	author = {SpringSource},
	title = {Spring Framework 3.0.x},
	month = {June},
	year = {2013},
	howpublished = {\url{http://www.springsource.org}}
}

@INPROCEEDINGS{cohort,
    author = {James R. Larus and Michael Parkes},
    title = {Using Cohort Scheduling to Enhance Server Performance},
    booktitle = {},
    year = {2002},
    pages = {103--114}
}
